#ifndef _EDITOR_H_
#define _EDITOR_H_

/* definisce la tolleranza entro la quale il click vicino ad un vertice dell'area
 * in costruzione fa' si' che il poligono si consideri chiuso */
#define TOLERANCE 0.3f

#include "../../client/variables.h"
#include "../physics/world.h"
#include "../physics/world_entity.h"
#include "../../gfx/gfx_engine.h"
#include "GL/glfw.h"

#include "../physics/world.h"

#include <cmath>
#include <vector>

#define ORTHONALIZE false

enum {EDITOR_DRAW_AREA};

class World;
class GFXEngine;

extern World *world;

/* classe per gestire l'editor di livelli */
class Editor
{
	private:
		int toolSelected;
		float gridSize;
		
		/* booleano per indicare se siamo a meta' disegno di un'area */
		bool buildingArea;
		/* vettore usato per le coppie di vertici del poligono temporaneo in costruzione*/
		std::vector<float> tempArea;
		
		bool checkIfNear(float x1, float x2, float y1, float y2);
		
		
	public:
		Editor(void);
		~Editor(void);
		void setState(int state);
		int getState();
		void handleClick(int button, int action);
		
	friend class GFXEngine;
};

#endif
